package com.LeeCode;

/**
 * 根据二叉树创建字符串
 */

public class Code606 {
    public static void main(String[] args) {
        Integer[] arr = {1, 2, 3, null, 4};
        TreeNode root = Utils.buildTree(arr);
        System.out.println(new Code606().tree2str(root));
    }

    public String tree2str(TreeNode root) {
        if (root == null) {
            return "";
        }

        StringBuilder sb = new StringBuilder();
        sb.append(root.val);

        // 左子树为空，右子树也为空
        if (root.left == null && root.right == null) {
            return sb.toString();
        }

        // 左子树不为空，直接加括号递归
        sb.append("(").append(tree2str(root.left)).append(")");

        // 右子树不为空时才加括号
        if (root.right != null) {
            sb.append("(").append(tree2str(root.right)).append(")");
        }

        return sb.toString();
    }
}
